<!DOCTYPE html>
<html lang="en">

<head>
    <title>安全工厂</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="css/style.css" rel="stylesheet">
</head>

<body>
    <script>
        // var arr1 = [2, 3, 4];
        // var arr2 = new Array(3, 4, 5);
        // var arr3 = Array(5);
        // //判断是否是一个数组
        // console.log(arr1 instanceof Array);
        // console.log(Array.isArray(arr1));
        // console.log(arr1.constructor === Array);
        // console.log(Object.prototype.toString.call(arr1) === '[object Array]');
        // function Book(title){
        //     this.title=title;
        //     console.log(this);
        // }
        // var b1=new Book("javascript 设计模式");
        // var b2=Book("javascript");
        // console.log(b2 instanceof Book);
        //当我们调用Book类实例化的时候，如果忘记使用new关键字，得到的结构就是
        //错误的，我们可以通过安全工厂模式解决
        //在创建的时候，如果当时对象不是当前类，那么我们就纠正过来
        function Book(title) {
            if (this instanceof Book) {
                this.title = title;
                console.log(this);
            } else {
                return new Book(this);
            }

        }
    </script>
</body>

</html>